import Vue from 'vue'
import Router from 'vue-router'
import {constantRoutes} from './constantRoutes'


//解决重复点击路由抛异常的问题
const originalPush = Router.prototype.push;
Router.prototype.push = function push(location) {
	return originalPush.call(this, location).catch(err => err)
};
/*
router.push 方法。这个方法会向 history 栈添加一个新的记录，当用户点击浏览器后退按钮时，则回到之前的 URL。
<router-link :to="...">等同于router.push(...)
设置 replace 属性（默认值: false）的话，当点击时，会调用 router.replace() 而不是 router.push()，
于是导航后不会留下 history 记录。即使点击返回按钮也不会回到这个页面。
*/
const originalReplace = Router.prototype.replace
Router.prototype.replace = function replace(location) {
  return originalReplace.call(this, location).catch(err => err)
}

Vue.use(Router)

const createRouter = () => new Router({
  // mode: 'history', 
  routes: constantRoutes
})

const router = createRouter()

//退出登录时重置路由
export function resetRouter() {
  const newRouter = createRouter()
  router.matcher = newRouter.matcher
}

export default router
